<?php

require_once '../classes/ConnectionDB.php';
require_once '../classes/UtenteDataManager.php';
require_once '../classes/Utente.php';
require_once '../classes/MailManager.php';


$connection = ConnectionDB::getInstance()->getConnection();
//$connection=ConnectionDB::getInstance();

$operation = $_POST['operation'];
if(!isset($_POST['operation']))
    $operation = $_GET['operation'];

// da testare
//if($operation != 'insertUtente' && $operation != 'login')
//{
//  if(!isset($_COOKIE["MTOCodice"]))
//  {
//    $result = new Utente();
//    $result->codice=-100;
//    printf(json_encode($result));
//  }
//  else
//  {
//    $isUserLocked = UtenteDataManager::getInstance()->isUserLocked($connection, $_COOKIE["MTOCodice"]);
//    if($isUserLocked == 0)
//    {
//      $result = new Utente();
//      $result->codice=-3;
//      setcookie('MTOCodice', '', time() - 3600, "/");
//      printf(json_encode($result));
//    }
//  }
//}

if($operation == 'sendEmailMessage')
{
    $oggetto = $_POST["oggetto"];
    $testo = $_POST["testo"];
    $listaEmail = $_POST["listaEmails"];

    $listaEmails = explode(",", $listaEmail);
    $result = 0;
    for($i=0;$i<count($listaEmails)-1 && $result == 0; $i++)
        $result = MailManager::getInstance()->sendEmailMessage($listaEmails[$i], $oggetto, $testo);

    if($result == 0)
        printf(json_encode("OK"));
    else
        printf(json_encode("KO"));

}

if($operation == 'sendSmsMessage')
{
    $testo = $_POST["testo"];
    $listaMobiles = $_POST["listaMobiles"];

    $listaMobile = explode(",", $listaMobiles);
    $result = 0;
    for($i=0;$i<count($listaMobile)-1 && $result == 0; $i++)
    {
        $loadProperties = WebApplicationInit::getInstance();
        list ($status,$credits) = MailManager::getInstance()->sendSms($loadProperties->getSmsUserId(),
                  $loadProperties->getSmsPassword(), $testo, $listaMobile[$i],
                  $loadProperties->getCommercialName(), 0, 'Alta', $_POST["notify"],'',0,0,$HTTP_SERVER_VARS['REMOTE_ADDR']);

        $output = ($status) ? 'Messaggio inviato. Credito residuo: '.$credits.'<br>' : 'Errore di invio del messaggio stato = ' .$status .'<br><br>';
        //echo $output;
    }

    if($result == 0)
        printf(json_encode("OK"));
    else
        printf(json_encode("KO"));

}

if($operation == 'searchUsers')
{
    $email = "";
    if(isset($_POST["email"]))
        $email = $_POST["email"];

    $nome = "";
    if(isset($_POST["nome"]))
        $nome = $_POST["nome"];

    $cognome = "";
    if(isset($_POST["cognome"]))
        $cognome = $_POST["cognome"];

    $discipline = "";
    if(isset($_POST["discipline"]))
        $discipline = $_POST["discipline"];


    $listaDiscipline = substr($discipline, 0, strlen($discipline)-1);
    $loadProperties = WebApplicationInit::getInstance();
    $context = $loadProperties->getContext();

    $listaUtenti = UtenteDataManager::getInstance()->getUtenti($connection, $email, $nome, $cognome, $listaDiscipline, $context);

    printf(json_encode($listaUtenti));
}
if($operation == 'updateDisciplinaUtente')
{
    if(!isset($_COOKIE["MTOCodice"]))
    {
        $utente = new Utente();
        $utente->codice= -100;
        printf(json_encode($utente));
    }
    else
    {
        $utente = $_POST["utente"];
        $disciplina = $_POST["disciplina"];
        $value = $_POST["value"];

        if ($value == 0)
            $result = UtenteDataManager::getInstance()->deleteUtenteDisciplina($connection, $utente, $disciplina);
        else
        {
            $result = 0;
            if(UtenteDataManager::getInstance()->utenteHasDisciplina($connection, $utente, $disciplina) != 0)
            {
                // echo 'utente ' . $utente . ' disciplina ' . $disciplina;
                if (UtenteDataManager::getInstance()->insertDisciplinaUtente($connection, $utente, $disciplina) < 0)
                    $result = -1;
            }
        }
        printf(json_encode($result));
    }
}
if($operation == 'updateUtente')
{
    if(!isset($_COOKIE["MTOCodice"]))
    {
        $utente = new Utente();
        $utente->codice= -100;
        printf(json_encode($utente));
    }
    else
    {
        $codiceUtente = $_POST["codice"];
        $attivo = $_POST["attivo"];
        $nome = $_POST["nome"];
        $cognome = $_POST["cognome"];
        $nazione = $_POST["nazione"];
        $regione = $_POST["regione"];
        $provincia = $_POST["provincia"];
        $comune = $_POST["comune"];
        $mobile = $_POST["mobile"];
        $indirizzo = $_POST["indirizzo"];
        $cap = $_POST["cap"];
        $res = UtenteDataManager::getInstance()->updateUtente($connection, $codiceUtente, $attivo, $nome, $cognome, $nazione, $regione, $provincia,
                  $comune, $mobile, $indirizzo, $cap);
        if($res == "1")
        {
            $utente = new Utente();
            $utente->codice= -1;
            printf(json_encode($utente));
        }
        else
        {
            $utente = UtenteDataManager::getInstance()->getUtente($connection, $codiceUtente);
            printf(json_encode($utente));
        }
    }
}
if($operation == 'getUtente')
{
    if(!isset($_COOKIE["MTOCodice"]))
    {
        $utente = new Utente();
        $utente->codice="-100";
        printf(json_encode($utente));
    }
    else
    {
        $codiceUtente = $_POST["codice"];
        $utente = UtenteDataManager::getInstance()->getUtente($connection, $codiceUtente);
        printf(json_encode($utente));
    }
}

if($operation == 'getUtenteDiscipline')
{
    if(!isset($_COOKIE["MTOCodice"]))
    {
        $utente = new Utente();
        $utente->codice="-100";
        printf(json_encode($utente));
    }
    else
    {
        $codiceUtente = $_POST["codice"];
        $elencoDiscipline = UtenteDataManager::getInstance()->getDiscipline($connection);
        $listaDiscipline = UtenteDataManager::getInstance()->getUtenteDiscipline($connection, $codiceUtente);
        $lista = array();
        for ($i = 0; $i<count($elencoDiscipline); $i++)
        {
            $idDisciplina = $elencoDiscipline[$i]->id;
            $descDisciplina = $elencoDiscipline[$i]->disciplina;
            //echo ' idDisciplina ' . $idDisciplina . " count(listaDiscipline) " . count($listaDiscipline);
            $flag = false;
            $value = 0;
            for($j = 0; $j<count($listaDiscipline) && $flag == false; $j++)
            {
                // echo '$listaDiscipline[$j] ' . $listaDiscipline[$j];
                if($listaDiscipline[$j] == $idDisciplina)
                {
                    $value = 1;
                    $flag = true;
                    // echo 'trovato $listaDiscipline[$j] ' . $listaDiscipline[$j] . " - idDisciplina " . $idDisciplina;
                }
            }
            array_push($lista, array("id" => $idDisciplina, "desc" => $descDisciplina, "value" => $value));
        }

        printf(json_encode($lista));
    }
}
if($operation == 'getNazioni')
{
    $elencoNazioni = UtenteDataManager::getInstance()->getNazioni($connection);
    printf(json_encode($elencoNazioni));
}
if($operation == 'getRegioni')
{
    $elencoRegioni = UtenteDataManager::getInstance()->getRegioni($connection);
    printf(json_encode($elencoRegioni));
}
if($operation == 'getProvincie')
{
    $regione = $_POST["regione"];
    $elencoProvincie = UtenteDataManager::getInstance()->getPovincie($connection, $regione);
    printf(json_encode($elencoProvincie));
}
if($operation == 'getComuni')
{
    $provincia = $_POST["provincia"];
    $regione = $_POST["regione"];
    $elencoProvincie = UtenteDataManager::getInstance()->getComuni($connection, $regione, $provincia);
    printf(json_encode($elencoProvincie));
}
if($operation == 'getDiscipline')
{
    $elencoDiscipline = UtenteDataManager::getInstance()->getDiscipline($connection);
    printf(json_encode($elencoDiscipline));
}
if($operation == 'getCodiceByEmail')
{
    $email = $_POST["email"];
    $loadProperties = WebApplicationInit::getInstance();
    $context = $loadProperties->getContext();
    $result = UtenteDataManager::getInstance()->getCodiceByEmail($connection, $email, $context);
    if($result->codice == -1)
        printf(json_encode("0"));
    else
        printf(json_encode("-1"));
}
if($operation == 'logout')
{
    // UtenteDataManager::getInstance()->removeSession($connection, $_COOKIE['MTOCodice']);
    //setcookie('MTOCodice', '', time() - 3600, "/");
    session_start();
    unset($_SESSION['MTOCodice']);
    $str="Location:". $_POST["redirect"];
    header($str);
}
if($operation == 'login')
{
    $email = $_POST["email"];
    $password = $_POST["password"];
    $loadProperties = WebApplicationInit::getInstance();
    $context = $loadProperties->getContext();
    login($connection, $email, $password, $context);
}
if ($operation == 'notifyActiveUser')
{
    $codiceUtente = $_POST["codice"];
    $utente = UtenteDataManager::getInstance()->getUtente($connection, $codiceUtente);
    $result = MailManager::getInstance()->sendActivationMail($utente);
    if($result == 0)
        printf(json_encode("OK"));
    else
        printf(json_encode("KO"));

}
if ($operation == 'insertUtente')
{
    $email = $_POST["email"];
    $password = $_POST["password"];
    $nome = $_POST["nome"];
    $cognome = $_POST["cognome"];
    $mobile = $_POST["mobile"];
    $indirizzo = $_POST["indirizzo"];
    $nazione = $_POST["nazione"];
    $regione = $_POST["regione"];
    $provincia = $_POST["provincia"];
    $comune = $_POST["comune"];
    $cap = $_POST["cap"];
    $discipline = $_POST["discipline"];

    $utente = new Utente();
    $loadProperties = WebApplicationInit::getInstance();
    $utente->email = addslashes($email);
    $utente->password = md5($password);
    $utente->nome = addslashes($nome);
    $utente->cognome = addslashes($cognome);
    $utente->mobile = $mobile;
    $utente->indirizzo = addslashes($indirizzo);
    $utente->nazione = addslashes($nazione);
    $utente->regione = addslashes($regione);
    $utente->provincia = addslashes($provincia);
    $utente->comune = addslashes($comune);
    $utente->cap = $cap;
    $utente->tipoUtente = 0;
    $utente->attivo = 1;
    $utente->context = $loadProperties->getContext();


    $codice = UtenteDataManager::getInstance()->insertUtente($connection, $utente);
    $operationResult = -1;
    if($codice != -1)
    {
        $utente->codice = $codice;

        $listaDiscipline = explode("_", $discipline);

        for($i=0;$i<count($listaDiscipline)-1; $i++)
        {
            //echo "listaDiscipline[i] " . $listaDiscipline[$i]. ' codice ' . $codice;
            $codiceDisciplina = $listaDiscipline[$i];
            UtenteDataManager::getInstance()->insertDisciplinaUtente($connection, $codice, $codiceDisciplina);
        }

        $resultMailFinalAdmin = MailManager::getInstance()->sendRegistrationMailToAdmin($utente);
        $resultMailFinalUser = MailManager::getInstance()->sendRegistrationMailToFinalUser($utente);

        if($resultMailFinalAdmin == 0 && $resultMailFinalUser == 0)
        {
            $loadProperties = WebApplicationInit::getInstance();
            $context = $loadProperties->getContext();
            session_start();
            $_SESSION['MTOCodice'] = $result->codice;
            $operationResult= 1;
        }


    }
    printf(json_encode($operationResult));



//        MailManager::getInstance()->sendMailRegistrazioneUtenteAgenziaGrafica($utente);
//        MailManager::getInstance()->sendMailConfermaRegistrazione($utente);
//        $codiceUser = UtenteDataManager::getInstance()->checkEmail($connection, $email);
//        $header .= "Reply-To: " . $utente->nome . " " . $utente->cognome ." <".$utente->email .">\r\n";
//        $header .= "Return-Path: Alessio Corvaglia <info@alessiocorvaglia.com>\r\n";
//        $header .= "From: " . $utente->nome . " " . $utente->cognome ." <".$utente->email .">\r\n";
//        $header .= "Organization: My Organization\r\n";
//        $header .= "Content-Type: text/html\r\n";
//
//        $oggetto = "Richiesta listino prezzi RISERVATO";
//        $messaggio = '<html><body>' . $utente->nome . ' ' . $utente->cognome . ' richiede attivazione listino riservato, DATI AZIENDALI:<br/>email Inviata da: ' . $utente->email.'<br />ragione sociale '. $utente->ragione . ' indirizzo: ' . $utente->indirizzo . ' ' . $utente->citta .' ' . $utente->cap .'<br/>telefono: '. $utente->tel .' <br/>cellualre : '. $utente->cell.'<br/>P.IVA : '. $utente->piva .' <br/><br/>Accetta cliccando <a href="http://ordini.alessiocorvaglia.com/listeners/UtenteListener.php?operation=attivaUtente&codice='.$codiceUser.'">qui</a> o copia incolla questo link nel browser http://ordini.alessiocorvaglia.com/listeners/UtenteListener.php?operation=attivaUtente&codice='.$codiceUser.'</body></html>';
//
//        mail("info@alessiocorvaglia.com", $oggetto, $messaggio, $header);
    //   mail("rocco.ruberti@gmail.com", $oggetto, $messaggio, $header);

}

function login($connection, $email, $password, $context)
{
    $codiceUtente = UtenteDataManager::getInstance()->getCodiceByEmail($connection, $email, $context);
    if($codiceUtente == -1)
        printf(json_encode($result));
    else
    {
        $result = UtenteDataManager::getInstance()->checkLogin($connection, $email, $password, $context);
        if($result->codice == -2)
            printf(json_encode($result));
        else
        {
//            setcookie('MTOCodice', $result->codice, time() + 3600, "/");
            session_start();
            $_SESSION['MTOCodice'] = $result->codice;
            $str="Location:". $_POST["redirect"];
            header($str);
//          $isUserLocked = UtenteDataManager::getInstance()->isUserLocked($connection, $result->codice);
//          if($isUserLocked == 0)
//          {
//            $result->codice=-3;
//            printf(json_encode($result));
//          }
//          else
//          {
//            $userInSession = UtenteDataManager::getInstance()->getUserInSession($connection, $result->codice);
//            if($userInSession == 0)
//            {
//              // c'è qualcuno in sessione
//              UtenteDataManager::getInstance()->removeSession($connection, $result->codice);
//              UtenteDataManager::getInstance()->insertUserLockedTable($connection, $result->codice);
//              $result->codice=-3;
//              printf(json_encode($result));
//            }
//            else
//            {
//	      //cancello vecchi sessioni, se ci sono magari per cookies scaduti, prima di inserirne una nuova
//	      UtenteDataManager::getInstance()->removeSession($connection, $result->codice);
//              UtenteDataManager::getInstance()->insertSession($connection, $result->codice);
//              setcookie('MTOCodice', $result->codice, time() + 3600, "/");
//              printf(json_encode($result));
//            }
//          }
        }
    }
}
?>
